﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using Model;
using ViewModel;

namespace DataAccess
{
    public class GratificacionDataAccess
    {
        public IList<GratificacionViewModel> ObtenerGratificacionPorMes(int idMes, int anio)
        {
            var gratificacionPorMes= new List<GratificacionViewModel>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerGratificacionPorMes",
                    new[] { new SqlParameter("IdMes", idMes), new SqlParameter("Anio", anio) }))
            {
                while (dataReader.Read())
                {
                    gratificacionPorMes.Add(CrearEntidad(dataReader));
                }
                dataReader.Close();
            }
            return gratificacionPorMes;
        }

        /*public IList<Mes> ObtenerMeses()
        {
            var meses = new List<Mes>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerMeses"))
            {
                while (dataReader.Read())
                {
                    meses.Add(new Mes() { IdMes = SqlHelper.GetInt(dataReader, 0), NombreMes = SqlHelper.GetString(dataReader, 1) });
                }
                dataReader.Close();
            }
            return meses;
        }

        public void InsertarActualizarErroresPorColaborador(ErroresColaborador erroresColaborador)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "InsertarActualizarErrores",
                new[]
                {
                    new SqlParameter("IdError", erroresColaborador.IdError),
                    new SqlParameter("IdColaborador", erroresColaborador.IdColaborador),
                    new SqlParameter("FechaIngreso", erroresColaborador.FechaIngreso),
                    new SqlParameter("Cantidad", erroresColaborador.Cantidad),
                    new SqlParameter("Observaciones", "-")
                });

        }

        public void InsertarActualizarError(Error error)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "InsertarActualizarError",
                new[]
                {
                    new SqlParameter("IdError", error.IdError),
                    new SqlParameter("NombreError", error.NombreError),
                    new SqlParameter("Estado", (error.Estado ? "A" : "I"))
                });
        }

        public List<Error> ObtenerErrores()
        {
            var errores = new List<Error>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerErrores"))
            {
                while (dataReader.Read())
                {
                    errores.Add(CrearEntidadError(dataReader));
                }
                dataReader.Close();
            }
            return errores;
        }
        */

        private GratificacionViewModel CrearEntidad(IDataReader dataReader)
        {
            return new GratificacionViewModel
            {
                IdColaborador =SqlHelper.GetInt(dataReader, 0),
                IdMes =SqlHelper.GetInt(dataReader, 1),
                Anio = SqlHelper.GetInt(dataReader, 2),
                Nombre = SqlHelper.GetString(dataReader, 3),
                Coeficiente = SqlHelper.GetDouble(dataReader, 4),
                Ponderacion = SqlHelper.GetDouble(dataReader, 5),
                Sumatoria = SqlHelper.GetDouble(dataReader, 6),
                Resultado = SqlHelper.GetDouble(dataReader, 7),
                Porcentaje = SqlHelper.GetDouble(dataReader, 8)
            };
        }
        

        /*
        private Error CrearEntidadError(IDataReader dataReader)
        {
            return new Error
            {
                IdError = SqlHelper.GetInt(dataReader, 0),
                NombreError = SqlHelper.GetString(dataReader, 1),
                Estado = (SqlHelper.GetString(dataReader, 2) == "A")
            };
        }

        public void ActivarInactivarError(int idError)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "ActivarInactivarError",
                new[] {
                    new SqlParameter("IdError", idError)
                });
        }

        public Error ObtenerErrorPorId(int idError)
        {
            var error = new Error();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerErrorPorId",
                        new[] { new SqlParameter("IdError", idError) }))
            {
                while (dataReader.Read())
                {
                    error = (CrearEntidadError(dataReader));
                }
                dataReader.Close();
            }
            return error;
        }*/
    }
}

